//
// Created by sjjmw on 2/23/2022.
//

#ifndef LEETCODE__17_H
#define LEETCODE__17_H

//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include <stdio.h>

int get_day_cnt_of_month(int year,int m){
    static const int month_day_cnt[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    if(m==2&&((year%4==0&&year%100!=0)||year%400==0)){
        return 29;
    }
    return month_day_cnt[m-1];
}
void walk(int n){
    int day=0;
//    int month=1;
    int year=1900;
    int arr[7]={0};

    while(year<1900+n){
        for(int i=0;i<12;i++){
            arr[(day+13)%7]++;
            day+= get_day_cnt_of_month(year,i+1);
        }
        year++;
    }

    printf("%d",arr[6]);
    for(int i=0;i<6;i++){
        printf(" %d",arr[i]);
    }
}

int main(){
    int a;
    std::cin>>a;
    walk(a);
//    while(1){}
    return 0;
}

#endif //LEETCODE__17_H
